package yzy.ecps.utils;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import org.springframework.web.multipart.MultipartFile;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

public class FileUploadUtil {
	/**
	 * 记录图片的绝对路径，该值要在使用setPicPath方法后获取
	 */
	public static String realPath;
	
	/**
	 * 记录图片的相对路径，该值要在使用setPicPath方法后获取
	 */
	public static String relativePath;
	
	public static void setPicPath(MultipartFile file,String serverPath,String picDir){
		String original = file.getOriginalFilename();
		String suffix = original.substring(original.lastIndexOf("."));
		relativePath = "/"+picDir+"/"+getCurrnetDateRandomFileName(suffix);
		realPath = serverPath + relativePath;
	}
	
	/**
	 * 上传图片并设置图片的相对路径和绝对路径
	 * @param file 图片文件
	 * @param serverPath 保存图片的文件服务器地址
	 * @param picDir 文件服务器下的图片文件夹路径
	 * @throws IOException
	 */
	public static void uploadPicAndSetPicPathes(MultipartFile file,String serverPath,String picDir) throws IOException{
		setPicPath(file, serverPath, picDir);
		byte[] bs = file.getBytes();
		uploadPic(bs,realPath);
	}
	/**
	 * 根据文件后缀名和系统当前时间生成随机的文件名称
	 * @param suffix
	 * @return
	 */
	private static String getCurrnetDateRandomFileName(String suffix){
		String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
		Random r = new Random();
		for (int i = 0; i < 5; i++) {
			format += r.nextInt(9);
		}
		return format+suffix;
	}
	/**
	 * 使用jersey框架将文件上传到指定的文件路径
	 * @param picBytes 文件的数据
	 * @param picRealPath 文件的路径
	 */
	public static void uploadPic(byte[]picBytes,String picRealPath){
		Client client = Client.create();
		WebResource resource = client.resource(picRealPath);
		resource.put(picBytes);
	}
	
}
